home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Format (PL) 2008 December
/
PC_Format_122008.iso
/
Multimedia
/
MediaPortal 0.2.3.0
/
MediaPortal_0.2.3.0_Setup.exe
/
scripts
/
imdb
/
movdb.csscript
< prev
next >
Wrap
Text File
|
2007-08-20
|
6KB
|
199 lines
//css_reference "core.dll";
//css_reference "Databases.dll";
//css_reference "utils.dll";
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Collections;
using System.Web;
using System.Xml;
using System.Text.RegularExpressions;
using MediaPortal.Util;
// change to Grabber, this for avoid to load by mediaportal
class Grabber : MediaPortal.Video.Database.IIMDBScriptGrabber
{
public Grabber()
{
}
void MediaPortal.Video.Database.IIMDBScriptGrabber.FindFilm(string strSearch, int iLimit, ArrayList elements)
{
string strURL = "http://www.movie-xml.com/xml/GetSeries.php?searchby=SeriesName&string=" + strSearch;
string title = "";
string databaseurl = "";
// string absoluteUri;
XmlNodeList xmldata = Generic(strURL);
foreach (XmlNode itemNode in xmldata)
{
databaseurl = "http://www.movie-xml.com/xml/GetSeries.php?searchby=id&string=";
foreach (XmlNode propertyNode in itemNode.ChildNodes)
{
if (propertyNode.Name.ToString() == "SeriesName")
title = propertyNode.InnerText;
if (propertyNode.Name.ToString() == "id")
databaseurl += propertyNode.InnerText;
}
if (title != "")
{
MediaPortal.Video.Database.IMDB.IMDBUrl url = new MediaPortal.Video.Database.IMDB.IMDBUrl(databaseurl, title + " (movdb)", "movdb");
elements.Add(url);
}
}
// code for search for movie titles
// .............
//.............
// if movie found add to listing
}
bool MediaPortal.Video.Database.IIMDBScriptGrabber.GetDetails(MediaPortal.Video.Database.IMDB.IMDBUrl url, ref MediaPortal.Video.Database.IMDBMovie movieDetails)
{
// string absoluteUri;
movieDetails.Title = "";
XmlNodeList xmldata = Generic(url.URL);
foreach (XmlNode itemNode in xmldata)
{
foreach (XmlNode propertyNode in itemNode.ChildNodes)
{
switch (propertyNode.Name.ToString())
{
case "SeriesName":
movieDetails.Title = propertyNode.InnerText;
break;
case "SeriesID":
movieDetails.IMDBNumber = propertyNode.InnerText;
break;
case "Yearmade":
int iYear = 1970;
System.Int32.TryParse(propertyNode.InnerText, out iYear);
movieDetails.Year = iYear;
break;
case "Director":
movieDetails.Director = CleanUpSeparator(propertyNode.InnerText).Replace("|", ", ");
break;
case "Writer":
movieDetails.WritingCredits = CleanUpSeparator(propertyNode.InnerText).Replace("|", ", ");
break;
case "Genre":
movieDetails.Genre = CleanUpSeparator(propertyNode.InnerText).Replace("|", " / ");
break;
case "Actors":
movieDetails.Actor =CleanUpSeparator(propertyNode.InnerText).Replace("|", "\n");
break;
case "Tagline":
movieDetails.TagLine = propertyNode.InnerText;
break;
case "Overview":
movieDetails.Plot = propertyNode.InnerText;
break;
case "Shortoverview":
movieDetails.PlotOutline = propertyNode.InnerText;
break;
case "Score":
movieDetails.Votes = propertyNode.InnerText;
break;
}
}
}
XmlNodeList xmldatat = Generic("http://www.movie-xml.com/xml/GetBanners.php?SeriesID=" + movieDetails.IMDBNumber);
foreach (XmlNode itemNode in xmldatat)
{
foreach (XmlNode propertyNode in itemNode.ChildNodes)
{
if (propertyNode.Name.ToString() == "BannerPath")
movieDetails.ThumbURL = "http://www.movie-xml.com/banners/" + propertyNode.InnerText;
}
}
if (movieDetails.Title == "")
return false;
else
return true;
}
string MediaPortal.Video.Database.IIMDBScriptGrabber.GetName()
{
return "IMDB grabber ";
}
string MediaPortal.Video.Database.IIMDBScriptGrabber.GetLanguage()
{
return "EN";
}
private string CleanUpSeparator(string strStr)
{
if (strStr.StartsWith("|"))
strStr=strStr.Substring(1);
if (strStr.EndsWith("|"))
strStr = strStr.Remove(strStr.Length-1);
return strStr;
}
static private XmlNodeList Generic(String sUrl)
{
if (sUrl == null || sUrl.Length < 1 || sUrl[0] == '/')
{
// this happens if no active mirror is set
return null;
}
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream data = null;
try
{
request = (HttpWebRequest)WebRequest.Create(sUrl);
request.Timeout = 20000;
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception e)
{
// can't connect, timeout, etc
MediaPortal.GUI.Library.Log.Error("Can't connect to " + sUrl + " : " + e.Message);
}
if (response != null)
{
// Get the stream associated with the response.
data = response.GetResponseStream();
StreamReader reader = new StreamReader(data, Encoding.Default, true);
String sXmlData = reader.ReadToEnd().Replace('\0', ' ');
data.Close();
reader.Close();
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(sXmlData);
// skip xml node
XmlNode root = doc.FirstChild.NextSibling;
if (root.Name == "Items")
{
return root.ChildNodes;
}
}
catch (XmlException e)
{
// bummer
MediaPortal.GUI.Library.Log.Error("Xml parsing of " + sUrl + " failed (line " + e.LineNumber + " - " + e.Message + ")");
}
response.Close();
}
return null;
}
}